library(tidyverse)
library(sf)
library(kableExtra)
library(ggplot2)
library(bookdown)

1 🔍 Analysis

1.0.1 Marginal seats in Victoria

According to the 2022 federal election voters data, there are 11 marginal seats out of the 39 total seats in the state Victoria. These regions with the marginal seats are mentioned in the below table 1.1.

elected_seats <- read_csv("data/HouseDopByDivisionDownload-27966.csv", skip = 1)


vic_elected_seats <- elected_seats %>% 
  filter(StateAb == "VIC")

vic_marginal_seats <- vic_elected_seats %>% 
  group_by(CandidateID) %>%
  filter(Elected == "Y" , CalculationType == "Preference Percent" , CountNumber == max(CountNumber), CalculationValue < 56) %>% mutate(DivisionNm = toupper(DivisionNm))
vic_marginal_division <- vic_marginal_seats %>% select(DivisionNm)

vic_marginal_division %>% 
  kable(caption = "Marginal seats of Victoria in 2022 federal elections", booktabs = TRUE) %>% 
  kable_styling(bootstrap_options = c("bordered" , "hover")) %>% 
      row_spec(0, background = "rgb(172, 178, 152)", color = "black", font_size = 18)
Table 1.1: Marginal seats of Victoria in 2022 federal elections
CandidateID DivisionNm
36704 ASTON
36711 CASEY
36712 DEAKIN
36074 GOLDSTEIN
36433 HIGGINS
36081 KOOYONG
36445 MCEWEN
36733 MENZIES
36737 MONASH
36061 NICHOLLS
36735 WANNON

1.0.2 Plotting the marginal electorates on a map

The map plotted below 1.1 for the 11 marginal electorates in the state of Victoria indicates that some of the regions are located near and around Melbourne (most of the divisions being on the East of Melbourne) which would have an urban lifestyle with higher expense of living, but we also have regions such as Wannon, Monash, Aston which are not situated close to Melbourne and represent rural areas and population. Also, even though most of these marginal areas are adjacent to one another as visible in the map, we may not be able to infer a strong geographical relationship for marginal seats in this scenario.

vic_map <- read_sf(here::here("data/vic-july-2021-esri/E_VIC21_region.shp")) %>%

   mutate(DivisionNm = toupper(Elect_div)) 
   
vic_map <- st_zm(vic_map)
division_colors <- c("ASTON" = "#DE3533", "KOOYONG" = "#ADD8E6", 
                  "CASEY" = "#8B0000", "MCEWEN" = "#873260", 
                  "DEAKIN" = "#10C25B", "MENZIES" = "#ff6300", 
                  "GOLDSTEIN" = "#0047AB", "MONASH" = "#0a9cca", 
                  "NICHOLLS" = "#e32636", "WANNON" = "#efdecd",
                  "HIGGINS" = "#000000")
ggplot(left_join(vic_map, vic_marginal_seats, by = "DivisionNm")) +
   geom_sf(aes(geometry = geometry, fill = DivisionNm), 
                  color = "white") + 
   coord_sf(xlim = c(142, 148.5), ylim = c(-39.1, -36.0)) +
   scale_fill_manual(values = division_colors) + 
   ggtitle("Marginal Winners of Australian Federal Election in 2022", 
           subtitle = "Victoria")
Victoria's marginal seats in federal election 2022

Figure 1.1: Victoria’s marginal seats in federal election 2022

1.0.3 Enrolment by Division data for the 2022 election

According to the Enrolment by Division data for election 2022, the total number of voters currently enrolled in each marginal division is mentioned in the below table 1.2.

enrollment_div_data <- read_csv("data/GeneralEnrolmentByDivisionDownload-27966.csv" , skip = 1)

marginal_div_data <- enrollment_div_data %>% filter( toupper(DivisionNm) %in% c(vic_marginal_seats$DivisionNm))

marginal_enrol_div <- marginal_div_data %>% select(DivisionNm,Enrolment)

marginal_enrol_div %>% 
  kable(caption = "Number of voters enrolled in each marginal seats of Victoria in 2022 federal elections", booktabs = TRUE) %>% 
  kable_styling(bootstrap_options = c("bordered" , "hover")) %>% 
      row_spec(0, background = "rgb(172, 178, 152)", color = "black", font_size = 18)
Table 1.2: Number of voters enrolled in each marginal seats of Victoria in 2022 federal elections
DivisionNm Enrolment
Aston 109705
Casey 114277
Deakin 112455
Goldstein 109633
Higgins 107736
Kooyong 112972
McEwen 108036
Menzies 112743
Monash 111082
Nicholls 114386
Wannon 115709

1.0.4 Analysing income and employment data for SA1 regions in Victoria

  1. The 2016 and 2021 income and employment data cannot be compared directly as the values in the column “SA1_code” have different variable names along with the values which was a key element required to make sensible comparisons. Due to the different values of SA1 code in both the tables, there will be an ambiguity on contemplating the similarity or difference in any other columns.
geopath_2016 <- here::here("data/Geopackage_2016_EIUWA_for_VIC/census2016_eiuwa_vic_short.gpkg")
st_layers(geopath_2016)
## Driver: GPKG 
## Available layers:
##                          layer_name geometry_type features fields crs_name
## 1    census2016_eiuwa_vic_ced_short                     39    489    GDA94
## 2  census2016_eiuwa_vic_gccsa_short                      4    489    GDA94
## 3    census2016_eiuwa_vic_lga_short                     82    489    GDA94
## 4    census2016_eiuwa_vic_poa_short                    698    489    GDA94
## 5     census2016_eiuwa_vic_ra_short                      6    489    GDA94
## 6    census2016_eiuwa_vic_sa1_short                  14073    489    GDA94
## 7    census2016_eiuwa_vic_sa2_short                    464    489    GDA94
## 8    census2016_eiuwa_vic_sa3_short                     68    489    GDA94
## 9    census2016_eiuwa_vic_sa4_short                     19    489    GDA94
## 10   census2016_eiuwa_vic_sed_short                     90    489    GDA94
## 11   census2016_eiuwa_vic_sos_short                      6    489    GDA94
## 12  census2016_eiuwa_vic_sosr_short                     12    489    GDA94
## 13   census2016_eiuwa_vic_ssc_short                   2931    489    GDA94
## 14   census2016_eiuwa_vic_ste_short                      1    489    GDA94
## 15   census2016_eiuwa_vic_sua_short                     22    489    GDA94
## 16   census2016_eiuwa_vic_ucl_short                    353    489    GDA94
geopath_2021 <- here::here("data/Geopackage_2021_G02_VIC_GDA94/G02_VIC_GDA94.gpkg")
st_layers(geopath_2021)
## Driver: GPKG 
## Available layers:
##            layer_name geometry_type features fields crs_name
## 1    G02_UCL_2021_VIC Multi Polygon      347     11    GDA94
## 2    G02_SUA_2021_VIC Multi Polygon       22     11    GDA94
## 3    G02_STE_2021_VIC Multi Polygon        1     11    GDA94
## 4   G02_SOSR_2021_VIC Multi Polygon       12     11    GDA94
## 5    G02_SOS_2021_VIC Multi Polygon        6     11    GDA94
## 6    G02_SED_2021_VIC Multi Polygon       90     11    GDA94
## 7    G02_SAL_2021_VIC Multi Polygon     2946     11    GDA94
## 8    G02_SA4_2021_VIC Multi Polygon       19     11    GDA94
## 9    G02_SA3_2021_VIC Multi Polygon       68     11    GDA94
## 10   G02_SA2_2021_VIC Multi Polygon      524     11    GDA94
## 11   G02_SA1_2021_VIC Multi Polygon    15482     11    GDA94
## 12   G02_POA_2021_VIC Multi Polygon      694     11    GDA94
## 13   G02_LGA_2021_VIC Multi Polygon       82     11    GDA94
## 14 G02_GCCSA_2021_VIC Multi Polygon        4     11    GDA94
## 15   G02_CED_2021_VIC Multi Polygon       41     11    GDA94
vicmap_sa1_2016 <- read_sf(geopath_2016, layer = "census2016_eiuwa_vic_sa1_short")
vicmap_sa1_2016$geom
## Geometry set for 14073 features  (with 4 geometries empty)
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: 140.9617 ymin: -39.15919 xmax: 149.9763 ymax: -33.98043
## Geodetic CRS:  GDA94
## First 5 geometries:
vicmap_sa1_2021 <- read_sf(geopath_2021, layer = "G02_SA1_2021_VIC")
vicmap_sa1_2021$geom
## Geometry set for 15482 features  (with 4 geometries empty)
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: 140.9619 ymin: -39.15919 xmax: 149.9762 ymax: -33.98065
## Geodetic CRS:  GDA94
## First 5 geometries:
  1. The below graph 1.2 clearly indicates that the median weekly rent has increased in the year 2021 as compared to 2016 arguing that, the overall rent across the SA1 regions have risen. Also, the boxplot of 2021 contains more number of outliers on the higher end suggesting that a section of people possibly living in the urban areas pay a much higher rent than the average population.
vicmap_sa1_2016_2 <- vicmap_sa1_2016 %>% select(Median_rent_weekly)
vicmap_sa1_2021_2 <- vicmap_sa1_2021 %>% select(Median_rent_weekly)

z1<- data.frame(vicmap_sa1_2016_2$Median_rent_weekly)
z1$Year <- 2016

z1 <- z1 %>% rename("Median_rent_weekly" = "vicmap_sa1_2016_2.Median_rent_weekly")

h1<- data.frame(vicmap_sa1_2021_2$Median_rent_weekly)
h1$Year <- 2021

h1 <- h1 %>% rename("Median_rent_weekly" = "vicmap_sa1_2021_2.Median_rent_weekly")

combined_df_1 <- bind_rows(z1,h1)


p1 <- ggplot(combined_df_1, aes(y=Median_rent_weekly,x=as.factor(Year),fill=as.factor(Year))) + geom_boxplot() + labs(fill='Census year', y = "Count" , x = "median weekly rent in 2016 and 2021") + scale_fill_manual(name="Legend",values=c("#006b3c", "#deb887"))
p1 
Comparing median weekly rent data for 2016 and 2021

Figure 1.2: Comparing median weekly rent data for 2016 and 2021

  1. The below plotted graph 1.3 indicates that the overall median household weekly income has increased in 2021 with comparison to the income in 2016. In the histogram, we can see that more people have income towards the higher end in 2021 than the people in 2016. Moreover, there is a section of population earning a lot higher household salary than most of the population in 2021.
vicmap_sa1_2016_1 <- vicmap_sa1_2016 %>% select(Median_tot_hhd_inc_weekly)
vicmap_sa1_2021_1 <- vicmap_sa1_2021 %>% select(Median_tot_hhd_inc_weekly)

z<- data.frame(vicmap_sa1_2016_1$Median_tot_hhd_inc_weekly)
z$Year <- 2016

z <- z %>% rename("Median_tot_hhd_inc_weekly" = "vicmap_sa1_2016_1.Median_tot_hhd_inc_weekly")

h<- data.frame(vicmap_sa1_2021_1$Median_tot_hhd_inc_weekly)
h$Year <- 2021

h <- h %>% rename("Median_tot_hhd_inc_weekly" = "vicmap_sa1_2021_1.Median_tot_hhd_inc_weekly")

combined_df <- bind_rows(z,h)


p2 <- ggplot(combined_df, aes(x=Median_tot_hhd_inc_weekly, fill=as.factor(Year))) + geom_histogram(position='identity',alpha=0.4,color='black') + labs(fill='Census year', y = "Count" , x = "median total household weekly income in 2016 and 2021") + scale_fill_manual(name="Legend",values=c("#a1caf1", "#fae7b5"))
p2 
Comparing median weekly income data for 2016 and 2021

Figure 1.3: Comparing median weekly income data for 2016 and 2021

  1. Though we have the median weekly rental data as well as the median weekly household income collected from ABS, it is not the most appropriate way to conclude the mortgage or rental stress on a household as we must consider some other important factors such as number of dependents living on that income in a given household. Living expenses makes up another aspect to be considered while determining a household is in rental stress or not. The size and type of property rented/ bought for the amount it is purchased also needs to be taken under consideration.

1.0.5 Combining the economic variables from the census with electoral data.

joined_map_2016 <- st_join(st_centroid(vicmap_sa1_2016), vic_map) %>%
  st_join(vicmap_sa1_2016 %>% select(sa1_7digitcode_2016), .)

ggplot(data = joined_map_2016) +
   geom_sf(aes(geometry = geom, fill = Elect_div)) +
  geom_sf(data = vic_map,
          aes(geometry = geometry), col = "red", fill = "transparent")
Map for 2016 census and electorate data

Figure 1.4: Map for 2016 census and electorate data

joined_map_2021 <- st_join(st_centroid(vicmap_sa1_2021), vic_map) %>%
  st_join(vicmap_sa1_2021 %>% select(SA1_CODE_2021), .)

ggplot(data = joined_map_2021) +
   geom_sf(aes(geometry = geom, fill = Elect_div)) +
  geom_sf(data = vic_map,
          aes(geometry = geometry), col = "red", fill = "transparent")
Map for 2021 census and electorate data

Figure 1.5: Map for 2021 census and electorate data

sa1_melb_2016 <- joined_map_2016 %>% filter( DivisionNm == "MELBOURNE")

sa1_melb_2021 <- joined_map_2021 %>% filter( DivisionNm == "MELBOURNE")

The total number of SA1 regions are there in electorate of Melbourne based on the 2016 census data plotted in 1.4 is 339

The total number of SA1 regions are there in electorate of Melbourne based on the 2021 census data plotted in 1.5 is 461

  1. In order to estimate the mean of each of these variables for an electorate, first we convert the sf object(vic_map) to a data frame. After doing that, we need to filter all the Melbourne division data so that we can calculate the mean of median monthly mortgage repay, weekly rent and weekly total household income separately using “Median_mortgage_repay_monthly”, “Median_rent_weekly” and “Median_tot_hhd_inc_weekly” variables for the Melbourne electorate.
electorates_df <- as.data.frame(vic_map)

melbourne_data <- joined_map_2021 %>% filter(DivisionNm == "MELBOURNE")

mean_mortgage_repay <- mean(melbourne_data$Median_mortgage_repay_monthly)

mean_rent <- mean(melbourne_data$Median_rent_weekly)

mean_income <- mean(melbourne_data$Median_tot_hhd_inc_weekly)


mean_mortgage_repay
## [1] 2054.015
mean_rent
## [1] 423.2798
mean_income
## [1] 1936.82
  1. We need to analyse the 2021 census data to determine if the impact of the cost of living crisis on voters in marginal seats compared to other electorates in Victoria. For this, we need to consider the economic variables that can provide an insight on the living expenses along with the income of the population in both marginal and non marginal divisions.

Firstly, on comparing median weekly rent between marginal seats and other electorates by plotting the graph 1.6, it is clearly visible that the people in marginal regions tend to pay higher rent that people living in non marginal regions, indicating that voters in these areas may be more impacted by the cost of living crisis.

Secondly, though the median household income of people living in marginal electorates is slightly higher in comparison, we also need to cater to the economic variables that contribute to the rental/mortgage stress. On analyzing the median monthly mortgage repayment with the monthly median household rent, the data revealed that marginal seats have a higher percentage of households facing unaffordable housing costs compared to other electorates. To support this analysis, map plotted below 1.7 clearly highlights the issue that a bigger section of people, who are spending more than 30% of their income in paying month mortgages, particularly in urban areas, belong to the marginal electorates suggesting higher housing costs issue is more prevalent in these regions. This further suggests that people are burdened with having to earn more income to cope up with cost of living crisis.

However, it is important to note that there can be other economic factors contributing to the living conditions as census data does not provide an exact image of the entire scenario and it is merely an overlook of the economic situation based on some aspects. We must also consider variables such as access to affordable healthcare and education, that could also impact voters’ perceptions of the cost of living crisis.

Overall, this analysis suggests that voters in marginal seats are indeed being impacted by the cost of living crisis more than other electorates in Victoria. It is important for the Victorian Labor Party to acknowledge these economic challenges and consider policies that address them.

new_data_marginal <- joined_map_2021 %>% filter(DivisionNm %in% c(toupper(marginal_div_data$DivisionNm)))

new_data <- joined_map_2021 %>% filter (! DivisionNm %in% c(toupper(marginal_div_data$DivisionNm)))

a<- data.frame(new_data_marginal$Median_rent_weekly)
a$Div <- "marginal"

a <- a %>% rename("Median_rent_weekly" = "new_data_marginal.Median_rent_weekly")

b<- data.frame(new_data$Median_rent_weekly)
b$Div <- "not marginal"

b <- b %>% rename("Median_rent_weekly" = "new_data.Median_rent_weekly")

combined_df_marginal <- bind_rows(a,b)


p1 <- ggplot(combined_df_marginal, aes(y=Median_rent_weekly,x=as.factor(Div),fill=as.factor(Div))) + geom_boxplot() + labs(fill='Electorates', y = "Count" , x = "median weekly rent in marginal and non marginal electorates") + scale_fill_manual(name="Legend",values=c("#e52b50", "#e9d66b"))
p1 
Median weekly rent in Marginal vs Non marginal regions

Figure 1.6: Median weekly rent in Marginal vs Non marginal regions

mortgage_stress <- joined_map_2021 %>% filter(Median_mortgage_repay_monthly > (0.3 *(4* Median_tot_fam_inc_weekly)))


mortgage_stress <- mortgage_stress %>%
   mutate(centroid = st_centroid(geom)) %>%
   filter(Median_mortgage_repay_monthly != 0)

mortgage_stress <- st_zm(mortgage_stress)

ggplot(mortgage_stress) +
   geom_sf(aes(geometry = centroid, color = Median_tot_prsnl_inc_weekly), shape = 3) +
   geom_sf(data = vic_map, aes(geometry = geometry), fill = "transparent", size = 1.3, color = "black") +
   coord_sf(xlim = c(142, 148.5), ylim = c(-39.1, -36.0)) +
   scale_color_viridis_c(name = "Median mortage monthly repay", option = "magma")
Map for showing areas with Median monthly mortgage higher than 30% of median monthly household income

Figure 1.7: Map for showing areas with Median monthly mortgage higher than 30% of median monthly household income

  1. We have used different datasets to analayse and answer questions asked in the Task 1-3.
  • The voters data for federal election 2022 is picked from the AEC website. The file downloaded to read the data is “HouseDopByDivisionDownload-27966.csv”.

  • The data required for plotting the marginal electorates on a map is taken from the AEC Electorates Redistribution website and the file used to read the data is “vic-july-2021-esri/E_VIC21_region.shp”.

  • To find the enrolment from each marginal division, the website used to collect the data was Australian Electoral Commision. Th data file consisting of the enrolment information was “GeneralEnrolmentByDivisionDownload-27966.csv”.

  • The 2016 census data is taken from the ABS website. we are loading the “-Geopackage_2016_EIUWA_for_VIC/census2016_eiuwa_vic_short.gpkg_” datafile into our code to read the income and employment data of SA1 regions in Victoria.

  • We are picking the 2021 geopackage census data for loading the “Geopackage_2021_G02_VIC_GDA94/G02_VIC_GDA94.gpkg” datafile for income and employement data for Victoria’s SA1 region.

1.1 Resources

  1. Tidyverse : Wickham H, Averick M, Bryan J, Chang W, McGowan LD, François R, Grolemund G, Hayes A, Henry L,Hester J, Kuhn M, Pedersen TL, Miller E, Bache SM, Müller K, Ooms J, Robinson D, Seidel DP, Spinu V, Takahashi K, Vaughan D, Wilke C, Woo K, Yutani H (2019). “Welcome to the tidyverse.” Journal of Open Source Software, 4(43), 1686. doi:10.21105/joss.01686 https://doi.org/10.21105/joss.01686.

  2. Sf : Pebesma, E., 2018. Simple Features for R: Standardized Support for Spatial Vector Data. The R Journal 10 (1), 439-446, https://doi.org/10.32614/RJ-2018-009 Pebesma, E., & Bivand, R. (2023). Spatial Data Science: With Applications in R (1st ed.). Chapman and Hall/CRC. https://doi.org/10.1201/9780429459016.

  3. ggplot2 : H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2016.

  4. kableExtra : Zhu H (2021). kableExtra: Construct Complex Table with ‘kable’ and Pipe Syntax. R package version 1.3.4, https://CRAN.R-project.org/package=kableExtra.

  5. bookdown : Xie Y (2023). bookdown: Authoring Books and Technical Documents with R Markdown. R package version 0.33, https://github.com/rstudio/bookdown. Xie Y (2016). bookdown: Authoring Books and Technical Documents with R Markdown. Chapman and Hall/CRC, Boca Raton, Florida. ISBN 978-1138700109, https://bookdown.org/yihui/bookdown.

The following are the OS system and R-packages used in this report:

library(sessioninfo)
sessioninfo::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value
##  version  R version 4.3.1 (2023-06-16 ucrt)
##  os       Windows 11 x64 (build 22631)
##  system   x86_64, mingw32
##  ui       RTerm
##  language (EN)
##  collate  English_India.utf8
##  ctype    English_India.utf8
##  tz       Australia/Sydney
##  date     2024-12-19
##  pandoc   3.1.11 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  package     * version date (UTC) lib source
##  bit           4.0.5   2022-11-15 [1] CRAN (R 4.3.1)
##  bit64         4.0.5   2020-08-30 [1] CRAN (R 4.3.1)
##  bookdown    * 0.34    2023-05-09 [1] CRAN (R 4.3.1)
##  bslib         0.6.1   2023-11-28 [1] CRAN (R 4.3.2)
##  cachem        1.0.8   2023-05-01 [1] CRAN (R 4.3.1)
##  class         7.3-22  2023-05-03 [2] CRAN (R 4.3.1)
##  classInt      0.4-10  2023-09-05 [1] CRAN (R 4.3.1)
##  cli           3.6.1   2023-03-23 [1] CRAN (R 4.3.1)
##  colorspace    2.1-0   2023-01-23 [1] CRAN (R 4.3.2)
##  crayon        1.5.2   2022-09-29 [1] CRAN (R 4.3.1)
##  DBI           1.2.2   2024-02-16 [1] CRAN (R 4.3.3)
##  digest        0.6.33  2023-07-07 [1] CRAN (R 4.3.1)
##  dplyr       * 1.1.3   2023-09-03 [1] CRAN (R 4.3.1)
##  e1071         1.7-14  2023-12-06 [1] CRAN (R 4.3.3)
##  evaluate      0.21    2023-05-05 [1] CRAN (R 4.3.1)
##  fansi         1.0.4   2023-01-22 [1] CRAN (R 4.3.1)
##  farver        2.1.1   2022-07-06 [1] CRAN (R 4.3.1)
##  fastmap       1.1.1   2023-02-24 [1] CRAN (R 4.3.1)
##  forcats     * 1.0.0   2023-01-29 [1] CRAN (R 4.3.1)
##  generics      0.1.3   2022-07-05 [1] CRAN (R 4.3.1)
##  ggplot2     * 3.5.0   2024-02-23 [1] CRAN (R 4.3.2)
##  glue          1.6.2   2022-02-24 [1] CRAN (R 4.3.1)
##  gtable        0.3.4   2023-08-21 [1] CRAN (R 4.3.1)
##  here          1.0.1   2020-12-13 [1] CRAN (R 4.3.1)
##  highr         0.11    2024-05-26 [1] CRAN (R 4.3.3)
##  hms           1.1.3   2023-03-21 [1] CRAN (R 4.3.1)
##  htmltools     0.5.7   2023-11-03 [1] CRAN (R 4.3.2)
##  httr          1.4.7   2023-08-15 [1] CRAN (R 4.3.1)
##  jquerylib     0.1.4   2021-04-26 [1] CRAN (R 4.3.1)
##  jsonlite      1.8.8   2023-12-04 [1] CRAN (R 4.3.2)
##  kableExtra  * 1.3.4   2021-02-20 [1] CRAN (R 4.3.1)
##  KernSmooth    2.23-21 2023-05-03 [2] CRAN (R 4.3.1)
##  knitr         1.48    2024-07-07 [1] CRAN (R 4.3.3)
##  labeling      0.4.3   2023-08-29 [1] CRAN (R 4.3.1)
##  lifecycle     1.0.4   2023-11-07 [1] CRAN (R 4.3.2)
##  lubridate   * 1.9.3   2023-09-27 [1] CRAN (R 4.3.1)
##  magrittr      2.0.3   2022-03-30 [1] CRAN (R 4.3.1)
##  munsell       0.5.1   2024-04-01 [1] CRAN (R 4.3.3)
##  pillar        1.9.0   2023-03-22 [1] CRAN (R 4.3.1)
##  pkgconfig     2.0.3   2019-09-22 [1] CRAN (R 4.3.1)
##  proxy         0.4-27  2022-06-09 [1] CRAN (R 4.3.1)
##  purrr       * 1.0.2   2023-08-10 [1] CRAN (R 4.3.2)
##  R6            2.5.1   2021-08-19 [1] CRAN (R 4.3.1)
##  Rcpp          1.0.11  2023-07-06 [1] CRAN (R 4.3.1)
##  readr       * 2.1.4   2023-02-10 [1] CRAN (R 4.3.1)
##  rlang         1.1.1   2023-04-28 [1] CRAN (R 4.3.1)
##  rmarkdown     2.27    2024-05-17 [1] CRAN (R 4.3.3)
##  rprojroot     2.0.4   2023-11-05 [1] CRAN (R 4.3.2)
##  rstudioapi    0.15.0  2023-07-07 [1] CRAN (R 4.3.1)
##  rvest         1.0.3   2022-08-19 [1] CRAN (R 4.3.1)
##  s2            1.1.4   2023-05-17 [1] CRAN (R 4.3.1)
##  sass          0.4.7   2023-07-15 [1] CRAN (R 4.3.1)
##  scales        1.3.0   2023-11-28 [1] CRAN (R 4.3.2)
##  sessioninfo * 1.2.2   2021-12-06 [1] CRAN (R 4.3.1)
##  sf          * 1.0-14  2023-07-11 [1] CRAN (R 4.3.1)
##  stringi       1.7.12  2023-01-11 [1] CRAN (R 4.3.0)
##  stringr     * 1.5.0   2022-12-02 [1] CRAN (R 4.3.1)
##  svglite       2.1.1   2023-01-10 [1] CRAN (R 4.3.1)
##  systemfonts   1.0.4   2022-02-11 [1] CRAN (R 4.3.1)
##  tibble      * 3.2.1   2023-03-20 [1] CRAN (R 4.3.1)
##  tidyr       * 1.3.0   2023-01-24 [1] CRAN (R 4.3.1)
##  tidyselect    1.2.0   2022-10-10 [1] CRAN (R 4.3.1)
##  tidyverse   * 2.0.0   2023-02-22 [1] CRAN (R 4.3.2)
##  timechange    0.2.0   2023-01-11 [1] CRAN (R 4.3.1)
##  tzdb          0.4.0   2023-05-12 [1] CRAN (R 4.3.1)
##  units         0.8-4   2023-09-13 [1] CRAN (R 4.3.1)
##  utf8          1.2.3   2023-01-31 [1] CRAN (R 4.3.1)
##  vctrs         0.6.3   2023-06-14 [1] CRAN (R 4.3.1)
##  viridisLite   0.4.2   2023-05-02 [1] CRAN (R 4.3.1)
##  vroom         1.6.3   2023-04-28 [1] CRAN (R 4.3.1)
##  webshot       0.5.5   2023-06-26 [1] CRAN (R 4.3.1)
##  withr         3.0.0   2024-01-16 [1] CRAN (R 4.3.2)
##  wk            0.8.0   2023-08-25 [1] CRAN (R 4.3.1)
##  xfun          0.46    2024-07-18 [1] CRAN (R 4.3.3)
##  xml2          1.3.5   2023-07-06 [1] CRAN (R 4.3.1)
##  yaml          2.3.7   2023-01-23 [1] CRAN (R 4.3.0)
## 
##  [1] C:/Users/Aishwarya Kumar/AppData/Local/R/win-library/4.3
##  [2] C:/Program Files/R/R-4.3.1/library
## 
## ──────────────────────────────────────────────────────────────────────────────